package service;

import dao.UserDao;
import factory.DaoFactory;
import model.User;
import java.util.List;

public class UserServiceImpl implements UserService { // 用户业务逻辑实现 完成人：姜凯严、邓亦明 7/5
    private UserDao userDao = DaoFactory.getUserDao();

    @Override
    public User login(String username, String password) { // 登录
        return userDao.findByUsernameAndPassword(username, password);
    }

    @Override
    public User findById(int userId) { // 根据ID查找用户
        return userDao.findById(userId);
    }

    @Override
    public List<User> findAll() { // 查询所有用户
        return userDao.findAll();
    }

    @Override
    public boolean addUser(User user) { // 添加用户
        return userDao.addUser(user);
    }

    @Override
    public boolean addUser(String username, String password) { // 添加用户（仅用户名和密码）
        return userDao.addUser(username, password);
    }

    @Override
    public boolean updateUser(User user) { // 修改用户
        return userDao.updateUser(user);
    }

    @Override
    public boolean deleteUser(int userId) { // 删除用户
        return userDao.deleteUser(userId);
    }

    @Override
    public List<User> findByUsername(String username) { // 根据用户名查找用户
        return userDao.findByUsername(username);
    }

    @Override
    public List<User> findByPhone(String phone) { // 根据电话查找用户
        return userDao.findByPhone(phone);
    }

    @Override
    public List<User> findByUsernameAndPhone(String username, String phone) { // 根据用户名和电话查找用户
        return userDao.findByUsernameAndPhone(username, phone);
    }

    @Override
    public boolean deductBalance(User user, double amount) {
        if (user.getBalance() < amount) {
            return false; // 余额不足
        }
        // 更新内存中的用户对象余额
        user.setBalance(user.getBalance() - amount);
        // 调用DAO更新数据库
        return userDao.updateUser(user); //
    }
}